package br.iars.service;

import javax.ejb.Remote;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import javax.jws.soap.SOAPBinding.Use;

import br.iars.service.exception.RecommendationServiceException;
import br.iars.service.type.AddContextRequest;
import br.iars.service.type.ElementList;
import br.iars.service.type.EstimatePreferenceRequest;
import br.iars.service.type.RecommendRequest;
import br.iars.service.type.RecommendedItem;
import br.iars.service.type.SetPreferenceRequest;
import br.iars.service.type.SetPreferencesRequest;

@Remote
@WebService(targetNamespace = "http://service.iars.br/v01/RecommendationService", name = "RecommendationService")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE, style = Style.DOCUMENT, use = Use.LITERAL)
public interface RecommendationService {

	public void addContext(AddContextRequest addContext) throws RecommendationServiceException;

	public void setPreference(SetPreferenceRequest params) throws RecommendationServiceException;
	
	public void setPreferences(SetPreferencesRequest params) throws RecommendationServiceException;

	public ElementList<RecommendedItem> recommend(RecommendRequest params) throws RecommendationServiceException;

	public float estimatePreference(EstimatePreferenceRequest params) throws RecommendationServiceException;
}
